package class202205.demo10.demo07;

/**
 * <T>:代表占位符--->代表当前类是一个泛型类
 * public T[] array = new T[10];报错的原因是
 * @param <T>
 */
class MyArray<T>{
    //public Object[] array = new Object[10];   //什么都可以放
    public T[] array = (T[])new Object[10];//这个写法也不好

    /**
     * 获取pos下标
     * @param pos
     * @return
     */
    public T getPos(int pos){
        return this.array[pos];
    }

    /**
     * 给pos下标放一个元素
     * @param pos
     * @param val
     */
    public void setPos(int pos,T val){
        this.array[pos]=val;
    }
    public T[] getArray(){
        return array;
    }

}

public class TestDemo {

    public static void main(String[] args) {
        MyArray<Integer> myArray = new MyArray<>();
        //String[] ret = (String) myArray.getArray();
        //Integer[] integers = myArray.getArray();
    }

   /* public static void main1(String[] args) {
        *//**
         * 1.<Integer>指定当前类中，使用的类型是Integer类型
         * 2.泛型在编译期间帮我做了两件事情
         *   2.1存放元素的时候进行类型检查   这里是（Integer）类型
         *   2.2取元素的时候，帮我进行类型转换
         *3.尖括号里面<必须是引用类型>
         *//*
        MyArray<Integer> myArray = new MyArray<>();
        myArray.setPos(0,1);
        myArray.setPos(1,2);
        //myArray.setPos(1,"hello");


        //String ret = (String) myArray.getPos(1);//需要强转
        Integer ret = myArray.getPos(1);
        System.out.println(ret);


        MyArray<String> myArray1 = new MyArray<>();
        myArray1.setPos(0,"awei");
        myArray1.setPos(1,"zhenzhen");
        String suv = myArray1.getPos(1);
        System.out.println(suv);
    }*/
}
